var shell = require("shelljs");     //执行shell
var watch = require('watch');       //监测目录变化
const notifier = require('node-notifier');

// 忽略掉的文件和文件夹
let ignoreList = ['.git', 'node_modules'];

// 这里可以指定要监听的目录，可以是相对路径或绝对路径
watch.watchTree('../', function (f, curr, prev) {
    if (typeof f == 'object') return;
    let flag = true;
    ignoreList.forEach((item, index) => {
        if (String(f).includes(item)) flag = false;
    })
    if (flag) {
        console.log(f)
        console.log('================== ', 222)
        debounce(myExe)();
    } else {
        return;
    }
});

// 执行具体操作
let myExe = function () {
    shell.exec("run.bat");
    doneNotify();
}

// ------------------------防抖---------------------------
let timeout = null; // 创建一个标记用来存放定时器的返回值
var debounce = (fn, ...args) => {
    return function () {
        clearTimeout(timeout); // 保证用户输入完之后只有一个setTimeout
        timeout = setTimeout(() => {
            fn.call(this, arguments, args);
        }, 1000 * 8);
    };
}

// window系统的通知系统
function doneNotify() {
    notifier.notify({
        'title': '上传文件完成',
        'message': new Date().getHours() + ":" + new Date().getMinutes(),
        'wait': true,
    });
}